package com.hspedu.homework;

/**
 * @Author Stringzhua
 * @Date 2024/3/10 15:18
 * description:
 * (1)将字符串中指定部分进行反转,比如将"abcdef"反转为"aedcbf"
 * (2)编写方法public static String reverse(String str,int start,int end)完成
 * <p>
 * 思路分析:
 * (1)先把方法定义搞定
 * (2)把String转成char[] 因为char[]的元素是可以交换的
 * (3)分析图
 */
public class homework01 {
    public static void main(String[] args) {
        //test
        String str = "abcdef";
        System.out.println("===交换前===");
        System.out.println(str);
        try {
            str = reverse(str, 1, 4);
            System.out.println("===交换后===");
            System.out.println(str);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
    }

    public static String reverse(String str, int start, int end) {
        //对输入的参数做验证
        //先写出正确的情况,然后取反
        //这样写思路较为清晰
        if (!(str != null && start >= 0 && end > start && end <= str.length())) {
            throw new RuntimeException("您的参数输入有误~");
        }
        char[] chars = str.toCharArray();
        char temp = ' ';//交换temp变量
        for (int i = start, j = end; i < j; i++, j--) {
            temp = chars[i];
            chars[i] = chars[j];
            chars[j] = temp;
        }
        //使用chars交换后的重新构建一个String返回
        return new String(chars);
    }
}
